Load datasets

dat_main = read.delim("share-SIMBA-main.txt")
dat_truncated = read.delim("share-SIMBA-truncated-mob.txt")
dat_baseline = read.delim("share-SIMBA-rae-baseline.txt")
dat_dichotomized = read.delim("share-SIMBA-dichotomized-mob.txt")
dat_map = read.delim("share-SIMBA-map.txt")

dat_off = subset(dat_main, Cut_off_date=="Official")
dat_prim = subset(dat_off, Analysis=="Primary")
dat_mod = subset(dat_main, Analysis == "Primary")

S8. Descriptive analyses

Location of studies

ES distribution

Description

dat_map$continent = c("Oceania", "Asia", "America", "America", "Asia", "Europe", "Africa", "Europe", "Europe", "Europe", "Europe", "Europe", "Oceania", "Europe", "Europe", "Europe", "Africa", "Europe", "America")
continent = dat_map %>%
  group_by(continent) %>%
  summarise(n_studies = sum(n_studies)) 

paste0(
  # number raw data
  "Among them, we were able to access the data of ",
  length(unique(dat_prim[dat_prim$raw_data == "YES", ]$ID)),
  # number of unique studies
  " unique studies. Out of the ",
  length(unique(dat_mod$ID)),
   # number of participants
 " studies (n=",
  sum(dat_mod$N),
   # countries
  " participants), ",
  continent[continent$continent=="America", ]$n_studies,
  " were conducted in America (",
  "among which ",
  dat_map[dat_map$COUNTRY=="USA",]$n_studies,
  " were conducted in the USA), ",
  continent[continent$continent=="Europe", ]$n_studies,
  " in Europe, ",
  continent[continent$continent=="Oceania", ]$n_studies,
  " in Africa, ",
  continent[continent$continent=="Asia", ]$n_studies,
  " in Asia, and ",
  continent[continent$continent=="Africa", ]$n_studies,
  # variability participants
  " in Oceania. The number of participants per study ranged from ",
  min(as.numeric(dat_mod$N)),
  " to ",
  max(as.numeric(dat_mod$N)),
  ". The median length of follow up ranged from ",
  min(as.numeric(dat_mod$followupduration, na.rm=TRUE)),
  " years to ",
  round(max(as.numeric(dat_mod$followupduration), na.rm=TRUE)),
  " years (median=",
    round(median(as.numeric(dat_mod$followupduration), na.rm=TRUE)),
  " years, IQR=",
    round(IQR(as.numeric(dat_mod$followupduration), na.rm=TRUE)),
  " years). Among the ", 
    sum(dat_prim[!duplicated(dat_prim$ID),]$Cut_off_date=="Official"),
  " studies included in our main analyses, ",
  sum(dat_prim[!duplicated(dat_prim$ID),]$diag.procedure=="Diagnosis", na.rm=TRUE),
  " studies categorized ADHD using a formal diagnostic procedure, ",
  sum(dat_prim[!duplicated(dat_prim$ID),]$diag.procedure=="Symptoms", na.rm=TRUE),
" based on symptoms count, and ",
  sum(dat_prim[!duplicated(dat_prim$ID),]$diag.procedure=="Broad-based-scale", na.rm=TRUE),
  " based on the results of broad-based scales (such as the CBCL or SDQ)."
)
## [1] "Among them, we were able to access the data of 0 unique studies. Out of the 0 studies (n=6539 participants), 26 were conducted in America (among which 23 were conducted in the USA), 22 in Europe, 5 in Africa, 3 in Asia, and 2 in Oceania. The number of participants per study ranged from 10 to 813. The median length of follow up ranged from 4 years to 33 years (median=7 years, IQR=4 years). Among the 0 studies included in our main analyses, 0 studies categorized ADHD using a formal diagnostic procedure, 0 based on symptoms count, and 0 based on the results of broad-based scales (such as the CBCL or SDQ)."



S9. RAE baseline

Relative age effect at baseline

colnames(dat_baseline)[1:4] = paste0(colnames(dat_baseline)[1:4], "_base")
dat_baseline[,1:4] <- lapply(dat_baseline[,1:4], function(x) as.numeric(as.character(x)))

# dat_baseline = dplyr::left_join(dat_baseline, unique(dat_main[, c("Study", "study_ID", "Study_name", "Cut_off_date")])) 

res_mob_baseline <- meta::metagen(TE = logOR_base,
                        seTE = seOR_base,
                        method.tau = "REML",
                        n.e = as.numeric(dat_baseline$N_base),
                        sm = "OR",
                        studlab = paste(dat_baseline$Study_name),
                        data = dat_baseline)
res_mob_baseline
## Number of studies combined: k = 9
## Number of observations: o = 88753
## 
##                          OR           95%-CI    z  p-value
## Common effect model  1.0357 [1.0268; 1.0446] 7.99 < 0.0001
## Random effects model 1.0401 [1.0224; 1.0582] 4.48 < 0.0001
## 
## Quantifying heterogeneity:
##  tau^2 = 0.0003 [0.0000; 0.0032]; tau = 0.0184 [0.0000; 0.0566]
##  I^2 = 49.8% [0.0%; 76.6%]; H = 1.41 [1.00; 2.07]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  15.95    8  0.0431
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Restricted maximum-likelihood estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau

Forest plot

fct_forest(data = res_mob_baseline,
           title = "Association of MoB with \n childhood ADHD")



S10. Primary analysis

Main model

res_prim <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        n.e = as.numeric(dat_prim$N),
                        sm = "OR",
                        studlab = paste(dat_prim$Study_name),
                        data = dat_prim)
res_prim
## Number of studies combined: n = 42
## Number of estimates combined: k = 44
## Number of observations: o = 4743
## 
##                          OR           95%-CI    z p-value
## Random effects model 1.0242 [0.9896; 1.0600] 1.36  0.1733
## 
## Quantifying heterogeneity:
##  tau^2.1 = 0.0043 [0.0000; 0.0119]; tau.1 = 0.0656 [0.0000; 0.1092] (between cluster)
##  tau^2.2 < 0.0001 [0.0000; 0.0078]; tau.2 < 0.0001 [0.0000; 0.0881] (within cluster)
##  I^2 = 43.4% [19.0%; 60.5%]; H = 1.33 [1.11; 1.59]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  76.01   43  0.0014
## 
## Details on meta-analytical method:
## - Inverse variance method (three-level model)
## - Restricted maximum-likelihood estimator for tau^2
## - Profile-Likelihood method for confidence interval of tau^2 and tau

Forest plot

fct_forest(data = res_prim,
           title = "Association of MoB with \n persistence of ADHD")

Equivalence tests

tost = metafor::rma.mv(logOR ~ 1, V = seOR^2, random = ~ 1 | study_ID/es_id, data = dat_prim, level = 90)
## [1] "Even if one considers OR=0.99 to be a practically significant value, post-hoc equivalence tests would show that even if relative age leads to a decrease in the persistence of ADHD, this effect is extremely small OR=0.995"



S11. Sensitivity analyses

1. Truncated MoB

Main model

dat_truncated$Analysis = "Truncated MoB"

df_trunc = rbind(
  dat_truncated,
  dat_prim[,c(colnames(dat_truncated))]) %>%
    group_by(Study) %>%
    mutate(n=n()) %>%
    filter(n>1)

df_trunc[1:4] <- apply(df_trunc[1:4], 2, as.numeric)

V.SCE  <- with(df_trunc,
  clubSandwich::impute_covariance_matrix(
    vi = seOR^2, 
    cluster = Study, 
    r = 0.8,
    return_list = FALSE,
    smooth_vi = TRUE, 
    subgroup = Analysis))
## Registered S3 method overwritten by 'clubSandwich':
##   method    from    
##   bread.mlm sandwich
res_trunc <- metafor::rma.mv(yi= logOR, V = V.SCE,
                       data = df_trunc, 
                       mods = ~ Analysis - 1,
                       random = ~ Analysis | Study,
                       struct = "DIAG",
                       sparse = TRUE)
## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.
# metafor::profile.rma.mv(res_trunc)
res_trunc
## 
## Multivariate Meta-Analysis Model (k = 46; method: REML)
## 
## Variance Components:
## 
## outer factor: Study    (nlvls = 23)
## inner factor: Analysis (nlvls = 2)
## 
##             estim    sqrt  k.lvl  fixed          level 
## tau^2.1    0.0000  0.0000     23     no        Primary 
## tau^2.2    0.0000  0.0000     23     no  Truncated MoB 
## 
## Test for Residual Heterogeneity:
## QE(df = 44) = 38.3652, p-val = 0.7111
## 
## Test of Moderators (coefficients 1:2):
## QM(df = 2) = 4.4280, p-val = 0.1093
## 
## Model Results:
## 
##                        estimate      se    zval    pval    ci.lb   ci.ub    
## AnalysisPrimary          0.0471  0.0225  2.0928  0.0364   0.0030  0.0912  * 
## AnalysisTruncated MoB    0.0049  0.0225  0.2195  0.8263  -0.0392  0.0490    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2. Follow-up > 10yo

Main model

dat_S2 <- data.frame(subset(dat_off, grepl("S1:", dat_off$Analysis, fixed = TRUE))) %>%
  filter(!is.na(logOR)) %>%
  arrange(study_ID)

res_S2 <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        n.e = as.numeric(dat_S2$N),
                        sm = "OR",
                        studlab = paste(dat_S2$Study_name),
                        data = dat_S2)
res_S2
## Number of studies combined: k = 10
## Number of observations: o = 446
## 
##                          OR           95%-CI     z p-value
## Common effect model  0.9975 [0.9395; 1.0592] -0.08  0.9357
## Random effects model 0.9978 [0.9143; 1.0889] -0.05  0.9604
## 
## Quantifying heterogeneity:
##  tau^2 = 0.0093 [0.0000; 0.0481]; tau = 0.0965 [0.0000; 0.2193]
##  I^2 = 49.2% [0.0%; 75.4%]; H = 1.40 [1.00; 2.02]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  17.72    9  0.0386
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Restricted maximum-likelihood estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau

Forest plot

meta::forest(res_S2,
             smlab = "Association of MoB with \n persistence of ADHD",
             lab.e = "",
             comb.fixed = FALSE,
             text.random    = "Pooled Effect Size",
             print.tau2 = TRUE,
             prediction = TRUE,
             xlim = c(0.5, 2),
             col.predict = "black",
             digits.se = 2,
             leftcols = c("studlab", "n.e"),
             leftlabs = c("Study", "N"),
             col.diamond.random = "#9B1B1B",
             col.diamond.lines.random   = "#9B1B1B")

Post hoc analyses

meta::metareg(res_prim, formula = follow_cat, intercept = FALSE)
## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.
## 
## Multivariate Meta-Analysis Model (k = 44; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0045  0.0668     42     no       .id 
## sigma^2.2  0.0000  0.0000     44     no  .id/.idx 
## 
## Test for Residual Heterogeneity:
## QE(df = 41) = 71.6190, p-val = 0.0022
## 
## Test of Moderators (coefficients 1:3):
## QM(df = 3) = 2.5472, p-val = 0.4668
## 
## Model Results:
## 
##                  estimate      se    zval    pval    ci.lb   ci.ub    
## follow_cat4-6      0.0383  0.0286  1.3360  0.1816  -0.0179  0.0944    
## follow_cat6-8.5    0.0257  0.0294  0.8731  0.3826  -0.0320  0.0833    
## follow_cat8.5+     0.0064  0.0271  0.2383  0.8116  -0.0466  0.0595    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
meta::metareg(res_prim, formula = followupduration)
## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.
## 
## Multivariate Meta-Analysis Model (k = 44; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0035  0.0588     42     no       .id 
## sigma^2.2  0.0000  0.0000     44     no  .id/.idx 
## 
## Test for Residual Heterogeneity:
## QE(df = 42) = 68.2270, p-val = 0.0064
## 
## Test of Moderators (coefficient 2):
## QM(df = 1) = 4.9748, p-val = 0.0257
## 
## Model Results:
## 
##                   estimate      se     zval    pval    ci.lb    ci.ub     
## intrcpt             0.0742  0.0279   2.6558  0.0079   0.0194   0.1290  ** 
## followupduration   -0.0056  0.0025  -2.2304  0.0257  -0.0105  -0.0007   * 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

3. Age <=8 baseline & >=16 follow up

Main model

dat_S3 <- data.frame(subset(dat_off, grepl("S2:", dat_off$Analysis, fixed = TRUE))) %>%
  filter(!is.na(logOR)) %>%
  arrange(study_ID)

res_S3 <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        n.e = as.numeric(dat_S3$N),
                        sm = "OR",
                        studlab = paste(dat_S3$Study_name),
                        data = dat_S3)
res_S3
## Number of studies combined: k = 10
## Number of observations: o = 331
## 
##                          OR           95%-CI     z p-value
## Common effect model  0.9793 [0.9127; 1.0508] -0.58  0.5608
## Random effects model 0.9659 [0.8590; 1.0860] -0.58  0.5616
## 
## Quantifying heterogeneity:
##  tau^2 = 0.0198 [0.0027; 0.1314]; tau = 0.1409 [0.0516; 0.3625]
##  I^2 = 61.6% [23.6%; 80.7%]; H = 1.61 [1.14; 2.28]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  23.46    9  0.0052
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Restricted maximum-likelihood estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau

Forest plot

meta::forest(res_S3,
             smlab = "Association of MoB with \n persistence of ADHD",
             lab.e = "",
             comb.fixed = FALSE,
             text.random    = "Pooled Effect Size",
             print.tau2 = TRUE,
             prediction = TRUE,
             xlim = c(0.5, 2),
             col.predict = "black",
             digits.se = 2,
             leftcols = c("studlab", "n.e"),
             leftlabs = c("Study", "N"),
             col.diamond.random = "#9B1B1B",
             col.diamond.lines.random   = "#9B1B1B")

4. Same ADHD tool baseline & follow up

Main model

dat_S4 <- data.frame(subset(dat_off, grepl("S3:", dat_off$Analysis, fixed = TRUE))) %>%
  filter(!is.na(logOR)) %>%
  arrange(study_ID)

res_S4 <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        n.e = as.numeric(dat_S4$N),
                        sm = "OR",
                        studlab = paste(dat_S4$Study_name),
                        data = dat_S4)
res_S4
## Number of studies combined: n = 17
## Number of estimates combined: k = 19
## Number of observations: o = 2853
## 
##                          OR           95%-CI    z p-value
## Random effects model 1.0592 [1.0069; 1.1143] 2.22  0.0261
## 
## Quantifying heterogeneity:
##  tau^2.1 = 0.0047 [0.0000; 0.0176]; tau.1 = 0.0683 [0.0000; 0.1326] (between cluster)
##  tau^2.2 < 0.0001 [0.0000; 0.0075]; tau.2 < 0.0001 [0.0000; 0.0869] (within cluster)
##  I^2 = 52.1% [19.1%; 71.6%]; H = 1.45 [1.11; 1.88]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  37.59   18  0.0044
## 
## Details on meta-analytical method:
## - Inverse variance method (three-level model)
## - Restricted maximum-likelihood estimator for tau^2
## - Profile-Likelihood method for confidence interval of tau^2 and tau

Forest plot

fct_forest(data = res_S4,
           title = "Association of MoB with \n childhood ADHD")



S12. Robustness checks

1. Jackknife meta-analysis

repNA = rep(NA, length(unique(dat_prim$study_ID)))
res.JK = data.frame(es=repNA, ci_lo = repNA, ci_up = repNA, pval = repNA)
# i = 0
for (cohort in unique(dat_prim$study_ID)) {
  # i = i+1
  res = NA
  res = meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        sm = "OR",
                        data = subset(dat_prim, study_ID != cohort))
  i = which(unique(dat_prim$study_ID) == cohort)

  res.JK$es[i] = res$TE.random
  res.JK$ci_lo[i] = res$lower.random
  res.JK$ci_up[i] = res$upper.random
  res.JK$pval[i] = res$pval.random
}
res.JK[,1:3] <- exp(res.JK[,1:3])
res.JK[order(res.JK$es), ]
##          es     ci_lo    ci_up      pval
## 39 1.010561 0.9910157 1.030491 0.2917637
## 18 1.020275 0.9857079 1.056054 0.2537071
## 2  1.020307 0.9859978 1.055810 0.2493402
## 25 1.020342 0.9857147 1.056186 0.2529647
## 23 1.021291 0.9869590 1.056818 0.2272147
## 15 1.021461 0.9860210 1.058175 0.2385597
## 11 1.021615 0.9867594 1.057701 0.2272820
## 14 1.021738 0.9866353 1.058090 0.2279548
## 10 1.021819 0.9862027 1.058721 0.2330943
## 30 1.022561 0.9879449 1.058391 0.2041825
## 28 1.022781 0.9879257 1.058866 0.2029155
## 12 1.022790 0.9870522 1.059822 0.2143127
## 37 1.022895 0.9881024 1.058912 0.1998169
## 1  1.022912 0.9881301 1.058917 0.1993386
## 41 1.023521 0.9887514 1.059514 0.1873544
## 21 1.023649 0.9878109 1.060787 0.1986258
## 22 1.023658 0.9886855 1.059868 0.1873741
## 17 1.023685 0.9873796 1.061324 0.2038764
## 13 1.024182 0.9895536 1.060021 0.1733362
## 26 1.024182 0.9895536 1.060021 0.1733362
## 8  1.024182 0.9895536 1.060021 0.1733362
## 42 1.024313 0.9892985 1.060567 0.1758391
## 32 1.024420 0.9874665 1.062756 0.1980578
## 40 1.024521 0.9890047 1.061312 0.1783810
## 29 1.024579 0.9875971 1.062945 0.1954698
## 16 1.025080 0.9891814 1.062281 0.1732291
## 24 1.025238 0.9896889 1.062064 0.1662610
## 38 1.025247 0.9883554 1.063516 0.1823613
## 35 1.025561 0.9906930 1.061657 0.1526753
## 9  1.025646 0.9898935 1.062690 0.1618611
## 7  1.025667 0.9902151 1.062387 0.1579280
## 20 1.025793 0.9908583 1.061959 0.1497316
## 27 1.025870 0.9909034 1.062071 0.1488782
## 34 1.025978 0.9909563 1.062237 0.1478169
## 3  1.026303 0.9904343 1.063471 0.1525983
## 33 1.026672 0.9921628 1.062383 0.1313152
## 5  1.027326 0.9924583 1.063419 0.1259519
## 31 1.027357 0.9925329 1.063403 0.1250362
## 6  1.027551 0.9926796 1.063647 0.1228634
## 19 1.028208 0.9937467 1.063864 0.1097509
## 36 1.028678 0.9930158 1.065621 0.1162683
## 4  1.030993 0.9976586 1.065441 0.0687326

2. Cook’s distance

Main model

res <- metafor::rma.mv(logOR ~ 1, V = seOR^2, random = ~ 1 | study_ID/es_id, data = dat_prim)
x <- cooks.distance(res)
plot(x, type="o", pch=19, xlab="Observed Outcome", ylab="Cook's Distance")

influential <- unique(dat_prim$Study_name)[which(x > (3 * mean(x))) ]

dat_S8 <- dat_prim %>%
  filter(!Study_name %in% influential)

res_S8 <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        n.e = as.numeric(dat_S8$N),
                        sm = "OR",
                        studlab = paste(dat_S8$Study_name),
                        data = dat_S8)
res_S8
## Number of studies combined: n = 40
## Number of estimates combined: k = 42
## Number of observations: o = 4620
## 
##                          OR           95%-CI    z p-value
## Random effects model 1.0142 [0.9944; 1.0344] 1.40  0.1613
## 
## Quantifying heterogeneity:
##  tau^2.1 < 0.0001 [0.0000; 0.0030]; tau.1 < 0.0001 [0.0000; 0.0552] (between cluster)
##  tau^2.2 < 0.0001 [0.0000; 0.0019]; tau.2 < 0.0001 [0.0000; 0.0437] (within cluster)
##  I^2 = 10.6% [0.0%; 38.9%]; H = 1.06 [1.00; 1.28]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  45.84   41  0.2785
## 
## Details on meta-analytical method:
## - Inverse variance method (three-level model)
## - Restricted maximum-likelihood estimator for tau^2
## - Profile-Likelihood method for confidence interval of tau^2 and tau

Forest plot

fct_forest(data = res_S8,
           title = "Association of MoB with \n childhood ADHD")

3. Robust regression

Main model

dat_S5_cor <- data.frame(subset(dat_off, grepl("S6:", dat_off$Analysis, fixed = TRUE))) %>%
  filter(!is.na(logOR)) %>%
  arrange(study_ID)

dat_S5_uncor <- subset(dat_off, grepl("Primary", dat_off$Analysis, fixed = TRUE) & !Study %in% dat_S5_cor$Study)
dat_S5 = dplyr::bind_rows(dat_S5_cor, dat_S5_uncor)

res_S5 <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        n.e = as.numeric(dat_S5$N),
                        sm = "OR",
                        studlab = paste(dat_S5$Study_name),
                        data = dat_S5)
res_S5
## Number of studies combined: n = 42
## Number of estimates combined: k = 44
## Number of observations: o = 4743
## 
##                          OR           95%-CI    z p-value
## Random effects model 1.0237 [0.9893; 1.0593] 1.34  0.1788
## 
## Quantifying heterogeneity:
##  tau^2.1 = 0.0042 [0.0000; 0.0115]; tau.1 = 0.0646 [0.0000; 0.1073] (between cluster)
##  tau^2.2 < 0.0001 [0.0000; 0.0076]; tau.2 < 0.0001 [0.0000; 0.0870] (within cluster)
##  I^2 = 41.0% [15.3%; 59.0%]; H = 1.30 [1.09; 1.56]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  72.92   43  0.0029
## 
## Details on meta-analytical method:
## - Inverse variance method (three-level model)
## - Restricted maximum-likelihood estimator for tau^2
## - Profile-Likelihood method for confidence interval of tau^2 and tau

Forest plot

fct_forest(data = res_S5,
           title = "Association of MoB with \n childhood ADHD")

4. Dichotomized MoB

dat_dichotomized[1:4] <- apply(dat_dichotomized[1:4], 2, as.numeric)

res_dich <- meta::metagen(TE = logOR,
                          seTE = seOR,
                          id = study_ID,
                          method.tau = "REML",
                          n.e = as.numeric(dat_dichotomized$N),
                          sm = "OR",
                          studlab = paste(dat_dichotomized$Study_name),
                          data = dat_dichotomized)
## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.
res_dich
## Number of studies combined: n = 25
## Number of estimates combined: k = 26
## Number of observations: o = 1429
## 
##                          OR           95%-CI    z p-value
## Random effects model 1.3075 [0.9976; 1.7138] 1.94  0.0521
## 
## Quantifying heterogeneity:
##  tau^2.1 = 0.0062 [0.0000; 0.4271]; tau.1 = 0.0788 [0.0000; 0.6536] (between cluster)
##  tau^2.2 < 0.0001 [0.0000; 0.2966]; tau.2 = 0.0002 [0.0000; 0.5446] (within cluster)
##  I^2 = 0.0% [0.0%; 43.2%]; H = 1.00 [1.00; 1.33]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  14.66   25  0.9490
## 
## Details on meta-analytical method:
## - Inverse variance method (three-level model)
## - Restricted maximum-likelihood estimator for tau^2
## - Profile-Likelihood method for confidence interval of tau^2 and tau
fct_forest(data = res_dich,
           title = "Association of MoB with \n persistence of ADHD")



S13. Meta-regressions

1. Cohort with RAE assessment

Main model

dat_rae = subset(dat_prim, Study %in% dat_baseline$Study)
dat_rae$p_sig = ifelse(dat_rae$Study %in% subset(dat_baseline, pOR_base < 0.05)$Study, "RAE at baseline: sig", "RAE at baseline: ns")
dat_rae$or_larg = ifelse(dat_rae$Study %in% subset(dat_baseline, exp(logOR_base) >= 1.05)$Study, "RAE at baseline: large", "RAE at baseline: small")

# dat_rae$or_larg = ifelse(dat_rae$Study %in% subset(dat_baseline, logOR_base >= median(dat_baseline$logOR_base))$Study, "RAE at baseline: large", "RAE at baseline: small")
res_rae <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        n.e = as.numeric(dat_rae$N),
                        sm = "OR",
                        studlab = paste(dat_rae$Study_name),
                        data = dat_rae)

res_rae_p = meta::metareg(res_rae, formula = p_sig, intercept = TRUE)
res_rae_or = meta::metareg(res_rae, formula = or_larg, intercept = TRUE)
res_rae_p_woi = meta::metareg(res_rae, formula = p_sig, intercept = FALSE)
res_rae_or_woi = meta::metareg(res_rae, formula = or_larg, intercept = FALSE)
res_rae_p
## 
## Mixed-Effects Model (k = 9; tau^2 estimator: REML)
## 
## tau^2 (estimated amount of residual heterogeneity):     0 (SE = 0.0007)
## tau (square root of estimated tau^2 value):             0
## I^2 (residual heterogeneity / unaccounted variability): 0.00%
## H^2 (unaccounted variability / sampling variability):   1.00
## R^2 (amount of heterogeneity accounted for):            0.00%
## 
## Test for Residual Heterogeneity:
## QE(df = 7) = 5.5244, p-val = 0.5962
## 
## Test of Moderators (coefficient 2):
## QM(df = 1) = 1.8114, p-val = 0.1783
## 
## Model Results:
## 
##                            estimate      se     zval    pval    ci.lb   ci.ub 
## intrcpt                     -0.0394  0.0395  -0.9961  0.3192  -0.1168  0.0381 
## p_sigRAE at baseline: sig    0.0566  0.0421   1.3459  0.1783  -0.0258  0.1390 
##                              
## intrcpt                      
## p_sigRAE at baseline: sig    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
res_rae_or
## 
## Mixed-Effects Model (k = 9; tau^2 estimator: REML)
## 
## tau^2 (estimated amount of residual heterogeneity):     0 (SE = 0.0006)
## tau (square root of estimated tau^2 value):             0
## I^2 (residual heterogeneity / unaccounted variability): 0.00%
## H^2 (unaccounted variability / sampling variability):   1.00
## R^2 (amount of heterogeneity accounted for):            0.00%
## 
## Test for Residual Heterogeneity:
## QE(df = 7) = 6.3419, p-val = 0.5004
## 
## Test of Moderators (coefficient 2):
## QM(df = 1) = 0.9938, p-val = 0.3188
## 
## Model Results:
## 
##                                estimate      se     zval    pval    ci.lb 
## intrcpt                          0.0635  0.0548   1.1596  0.2462  -0.0439 
## or_largRAE at baseline: small   -0.0564  0.0565  -0.9969  0.3188  -0.1672 
##                                 ci.ub    
## intrcpt                        0.1709    
## or_largRAE at baseline: small  0.0545    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
res_rae_p_woi
## 
## Mixed-Effects Model (k = 9; tau^2 estimator: REML)
## 
## tau^2 (estimated amount of residual heterogeneity):     0 (SE = 0.0007)
## tau (square root of estimated tau^2 value):             0
## I^2 (residual heterogeneity / unaccounted variability): 0.00%
## H^2 (unaccounted variability / sampling variability):   1.00
## 
## Test for Residual Heterogeneity:
## QE(df = 7) = 5.5244, p-val = 0.5962
## 
## Test of Moderators (coefficients 1:2):
## QM(df = 2) = 2.4254, p-val = 0.2974
## 
## Model Results:
## 
##                            estimate      se     zval    pval    ci.lb   ci.ub 
## p_sigRAE at baseline: ns    -0.0394  0.0395  -0.9961  0.3192  -0.1168  0.0381 
## p_sigRAE at baseline: sig    0.0172  0.0144   1.1972  0.2312  -0.0110  0.0455 
##                              
## p_sigRAE at baseline: ns     
## p_sigRAE at baseline: sig    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
res_rae_or_woi
## 
## Mixed-Effects Model (k = 9; tau^2 estimator: REML)
## 
## tau^2 (estimated amount of residual heterogeneity):     0 (SE = 0.0006)
## tau (square root of estimated tau^2 value):             0
## I^2 (residual heterogeneity / unaccounted variability): 0.00%
## H^2 (unaccounted variability / sampling variability):   1.00
## 
## Test for Residual Heterogeneity:
## QE(df = 7) = 6.3419, p-val = 0.5004
## 
## Test of Moderators (coefficients 1:2):
## QM(df = 2) = 1.6078, p-val = 0.4476
## 
## Model Results:
## 
##                                estimate      se    zval    pval    ci.lb 
## or_largRAE at baseline: large    0.0635  0.0548  1.1596  0.2462  -0.0439 
## or_largRAE at baseline: small    0.0072  0.0140  0.5130  0.6079  -0.0202 
##                                 ci.ub    
## or_largRAE at baseline: large  0.1709    
## or_largRAE at baseline: small  0.0345    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Forest plot

res_rae_p_sub <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        subgroup = dat_rae$p_sig,
                        n.e = as.numeric(dat_rae$N),
                        sm = "OR",
                        studlab = paste(dat_rae$Study_name),
                        data = dat_rae)
## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.

## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.
res_rae_or_sub <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        subgroup = dat_rae$or_larg,
                        n.e = as.numeric(dat_rae$N),
                        sm = "OR",
                        studlab = paste(dat_rae$Study_name),
                        data = dat_rae)
## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.

## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.
fct_forest(data = res_rae_p_sub,
           title = "Association of MoB with \n persistence of ADHD")

fct_forest(data = res_rae_or_sub,
           title = "Association of MoB with \n childhood ADHD")

2. ADHD diagnosis tool

Model

dat_S9 = dat_prim

metafor::rma.mv(logOR ~ diag.procedure - 1, V = seOR^2, random = ~ 1 | study_ID/es_id, data = dat_S9)
## 
## Multivariate Meta-Analysis Model (k = 44; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.0044  0.0660     42     no        study_ID 
## sigma^2.2  0.0000  0.0000     44     no  study_ID/es_id 
## 
## Test for Residual Heterogeneity:
## QE(df = 41) = 66.4096, p-val = 0.0072
## 
## Test of Moderators (coefficients 1:3):
## QM(df = 3) = 2.8640, p-val = 0.4131
## 
## Model Results:
## 
##                                  estimate      se     zval    pval    ci.lb 
## diag.procedureBroad-based-scale   -0.0028  0.0344  -0.0820  0.9346  -0.0703 
## diag.procedureDiagnosis            0.0272  0.0246   1.1040  0.2696  -0.0211 
## diag.procedureSymptoms             0.0472  0.0369   1.2800  0.2005  -0.0251 
##                                   ci.ub    
## diag.procedureBroad-based-scale  0.0646    
## diag.procedureDiagnosis          0.0754    
## diag.procedureSymptoms           0.1196    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
metafor::rma.mv(logOR ~ diag.procedure.bas - 1, V = seOR^2, random = ~ 1 | study_ID/es_id, data = dat_S9)
## 
## Multivariate Meta-Analysis Model (k = 44; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.0042  0.0648     42     no        study_ID 
## sigma^2.2  0.0000  0.0000     44     no  study_ID/es_id 
## 
## Test for Residual Heterogeneity:
## QE(df = 41) = 69.4594, p-val = 0.0036
## 
## Test of Moderators (coefficients 1:3):
## QM(df = 3) = 5.1582, p-val = 0.1606
## 
## Model Results:
## 
##                                      estimate      se     zval    pval    ci.lb 
## diag.procedure.basBroad-based-scale   -0.0055  0.0389  -0.1404  0.8883  -0.0816 
## diag.procedure.basDiagnosis            0.0120  0.0229   0.5223  0.6014  -0.0330 
## diag.procedure.basSymptoms             0.0817  0.0370   2.2058  0.0274   0.0091 
##                                       ci.ub    
## diag.procedure.basBroad-based-scale  0.0707    
## diag.procedure.basDiagnosis          0.0569    
## diag.procedure.basSymptoms           0.1543  * 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
metafor::rma.mv(logOR ~ diag.procedure.follow - 1, V = seOR^2, random = ~ 1 | study_ID/es_id, data = dat_S9)
## 
## Multivariate Meta-Analysis Model (k = 44; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.0044  0.0660     42     no        study_ID 
## sigma^2.2  0.0000  0.0000     44     no  study_ID/es_id 
## 
## Test for Residual Heterogeneity:
## QE(df = 41) = 66.4096, p-val = 0.0072
## 
## Test of Moderators (coefficients 1:3):
## QM(df = 3) = 2.8640, p-val = 0.4131
## 
## Model Results:
## 
##                                         estimate      se     zval    pval 
## diag.procedure.followBroad-based-scale   -0.0028  0.0344  -0.0820  0.9346 
## diag.procedure.followDiagnosis            0.0272  0.0246   1.1040  0.2696 
## diag.procedure.followSymptoms             0.0472  0.0369   1.2800  0.2005 
##                                           ci.lb   ci.ub    
## diag.procedure.followBroad-based-scale  -0.0703  0.0646    
## diag.procedure.followDiagnosis          -0.0211  0.0754    
## diag.procedure.followSymptoms           -0.0251  0.1196    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Forest plot

res_diag <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        subgroup = diag.procedure,
                        method.tau = "REML",
                        n.e = as.numeric(dat_S9$N),
                        sm = "OR",
                        studlab = paste(dat_S9$Study_name),
                        data = dat_S9)
## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.

## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.

## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.
fct_forest(data = res_diag,
           title = "Association of MoB with \n childhood ADHD")

3. Sampling type

Model

res_S11 <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        n.e = as.numeric(dat_prim$N),
                        sm = "OR",
                        studlab = paste(dat_prim$Study_name),
                        data = dat_prim)

meta::metareg(res_S11, formula = sampling_cat, intercept = TRUE)
## 
## Multivariate Meta-Analysis Model (k = 44; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0044  0.0666     42     no       .id 
## sigma^2.2  0.0000  0.0000     44     no  .id/.idx 
## 
## Test for Residual Heterogeneity:
## QE(df = 41) = 71.4911, p-val = 0.0022
## 
## Test of Moderators (coefficients 2:3):
## QM(df = 2) = 0.6080, p-val = 0.7378
## 
## Model Results:
## 
##                               estimate      se     zval    pval    ci.lb 
## intrcpt                         0.0453  0.0329   1.3752  0.1691  -0.0193 
## sampling_catConvenient cases   -0.0323  0.0434  -0.7445  0.4566  -0.1173 
## sampling_catPopulation-based   -0.0274  0.0455  -0.6034  0.5463  -0.1165 
##                                ci.ub    
## intrcpt                       0.1099    
## sampling_catConvenient cases  0.0527    
## sampling_catPopulation-based  0.0617    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
meta::metareg(res_S11, formula = sampling_cat, intercept = FALSE)
## 
## Multivariate Meta-Analysis Model (k = 44; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0044  0.0666     42     no       .id 
## sigma^2.2  0.0000  0.0000     44     no  .id/.idx 
## 
## Test for Residual Heterogeneity:
## QE(df = 41) = 71.4911, p-val = 0.0022
## 
## Test of Moderators (coefficients 1:3):
## QM(df = 3) = 2.4297, p-val = 0.4881
## 
## Model Results:
## 
##                               estimate      se    zval    pval    ci.lb   ci.ub 
## sampling_catCommunity           0.0453  0.0329  1.3752  0.1691  -0.0193  0.1099 
## sampling_catConvenient cases    0.0130  0.0282  0.4614  0.6445  -0.0423  0.0683 
## sampling_catPopulation-based    0.0179  0.0313  0.5706  0.5683  -0.0435  0.0793 
##                                 
## sampling_catCommunity           
## sampling_catConvenient cases    
## sampling_catPopulation-based    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Forest plot

res_sampling <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        subgroup = sampling_cat,
                        method.tau = "REML",
                        n.e = as.numeric(dat_prim$N),
                        sm = "OR",
                        studlab = paste(dat_prim$Study_name),
                        data = dat_prim)
## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.

## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.

## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.
fct_forest(data = res_sampling,
           title = "Association of MoB with \n childhood ADHD")

4. ADHD subtypes

Main model

dat_S6 <- data.frame(subset(dat_off, grepl("S8:", dat_off$Analysis, fixed = TRUE))) %>%
  filter(!is.na(logOR)) %>%
  arrange(study_ID) %>%
  filter(Cut_off_date == "Official")

res_S6 <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        n.e = as.numeric(dat_S6$N),
                        sm = "OR",
                        studlab = paste(dat_S6$Study_name),
                        data = dat_S6)

res_S6_reg = meta::metareg(res_S6, formula = Analysis, intercept = TRUE)
res_S6_reg
## 
## Multivariate Meta-Analysis Model (k = 31; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0000  0.0000     19     no       .id 
## sigma^2.2  0.0029  0.0537     31     no  .id/.idx 
## 
## Test for Residual Heterogeneity:
## QE(df = 28) = 30.8794, p-val = 0.3225
## 
## Test of Moderators (coefficients 2:3):
## QM(df = 2) = 0.0762, p-val = 0.9626
## 
## Model Results:
## 
##                                       estimate      se     zval    pval 
## intrcpt                                -0.0007  0.0293  -0.0246  0.9804 
## AnalysisS8: Hyperactive presentation   -0.0062  0.0789  -0.0786  0.9373 
## AnalysisS8: Inattentive presentation   -0.0177  0.0645  -0.2741  0.7840 
##                                         ci.lb   ci.ub    
## intrcpt                               -0.0582  0.0567    
## AnalysisS8: Hyperactive presentation  -0.1609  0.1485    
## AnalysisS8: Inattentive presentation  -0.1441  0.1088    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Forest plot

res_S6_plot <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        subgroup = Analysis,
                        n.e = as.numeric(dat_S6$N),
                        sm = "OR",
                        studlab = paste(dat_S6$Study_name),
                        data = dat_S6)
fct_forest(data = res_S6_plot,
           title = "Association of MoB with \n childhood ADHD")

5. Above vs. below IQ median

Main model

dat_S7 <- data.frame(subset(dat_off, grepl("S9:", dat_off$Analysis, fixed = TRUE))) %>%
  filter(!is.na(logOR)) %>%
  arrange(study_ID) %>%
  filter(Cut_off_date == "Official")

res_S7 <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        n.e = as.numeric(dat_S7$N),
                        sm = "OR",
                        studlab = paste(dat_S7$Study_name),
                        data = dat_S7)
res_S7_reg = meta::metareg(res_S7, formula = Analysis, intercept = TRUE)
res_S7_reg
## 
## Multivariate Meta-Analysis Model (k = 36; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0000  0.0000     22     no       .id 
## sigma^2.2  0.0032  0.0563     36     no  .id/.idx 
## 
## Test for Residual Heterogeneity:
## QE(df = 34) = 42.0107, p-val = 0.1626
## 
## Test of Moderators (coefficient 2):
## QM(df = 1) = 0.0137, p-val = 0.9069
## 
## Model Results:
## 
##                              estimate      se     zval    pval    ci.lb   ci.ub 
## intrcpt                        0.0205  0.0343   0.5981  0.5498  -0.0467  0.0877 
## AnalysisS9: IQ below median   -0.0054  0.0461  -0.1169  0.9069  -0.0957  0.0849 
##                                
## intrcpt                        
## AnalysisS9: IQ below median    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Forest plot

res_S7_plot <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        subgroup = Analysis,
                        n.e = as.numeric(dat_S7$N),
                        sm = "OR",
                        studlab = paste(dat_S7$Study_name),
                        data = dat_S7)
## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.

## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.

## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.
fct_forest(data = res_S7_plot,
           title = "Association of MoB with \n childhood ADHD")

6. Strict vs. flexible cut-off

Code

res_mod <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        subgroup = Cut_off_date,
                        n.e = as.numeric(dat_mod$N),
                        sm = "OR",
                        studlab = paste(dat_mod$Study_name),
                        data = dat_mod)
res_mod_reg = meta::metareg(res_mod, formula = Cut_off_date, intercept = TRUE)
res_mod_reg_woi = meta::metareg(res_mod, formula = Cut_off_date, intercept = FALSE)
res_mod_reg
## 
## Multivariate Meta-Analysis Model (k = 62; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0033  0.0576     58     no       .id 
## sigma^2.2  0.0000  0.0000     62     no  .id/.idx 
## 
## Test for Residual Heterogeneity:
## QE(df = 60) = 93.1406, p-val = 0.0039
## 
## Test of Moderators (coefficient 2):
## QM(df = 1) = 2.0208, p-val = 0.1552
## 
## Model Results:
## 
##                       estimate      se     zval    pval    ci.lb   ci.ub    
## intrcpt                 0.0241  0.0164   1.4671  0.1424  -0.0081  0.0563    
## Cut_off_dateProbable   -0.0448  0.0315  -1.4215  0.1552  -0.1066  0.0170    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
res_mod_reg_woi
## 
## Multivariate Meta-Analysis Model (k = 62; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0033  0.0576     58     no       .id 
## sigma^2.2  0.0000  0.0000     62     no  .id/.idx 
## 
## Test for Residual Heterogeneity:
## QE(df = 60) = 93.1406, p-val = 0.0039
## 
## Test of Moderators (coefficients 1:2):
## QM(df = 2) = 2.7446, p-val = 0.2535
## 
## Model Results:
## 
##                       estimate      se     zval    pval    ci.lb   ci.ub    
## Cut_off_dateOfficial    0.0241  0.0164   1.4671  0.1424  -0.0081  0.0563    
## Cut_off_dateProbable   -0.0207  0.0269  -0.7696  0.4415  -0.0735  0.0320    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Forest plot

res_mod_plot <- meta::metagen(TE = logOR,
                        seTE = seOR,
                        id = study_ID,
                        method.tau = "REML",
                        subgroup = Cut_off_date,
                        n.e = as.numeric(dat_mod$N),
                        sm = "OR",
                        studlab = paste(dat_mod$Study_name),
                        data = dat_mod)
## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.

## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.

## Warning: Ratio of largest to smallest sampling variance extremely large. May not
## be able to obtain stable results.
fct_forest(data = res_mod_plot,
           title = "Association of MoB with \n childhood ADHD")